package com.vr.cloudpicture.manager.websocket.handler;

import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

/**
 * 图片编辑状态管理器
 *
 * @author hzh
 * @date 2025/05/28
 */
public class PictureEditingStatusManager {
    /**
     * 每张图片的编辑状态，key:那张图片的pictureId，value：当前编辑图片的userId，本质上是拿pictureId作为锁,保证线程安全
     */
    private static final Map<Long, Long> PICTURE_EDITING_USERS = new ConcurrentHashMap<>();

    private PictureEditingStatusManager() {
    }

    /**
     * 判断图片是否正在被编辑
     *
     * @param pictureId 图片id
     * @return {@link Boolean}
     */
    public static boolean isBeingEdited(Long pictureId) {
        return PICTURE_EDITING_USERS.containsKey(pictureId);
    }

    /**
     * 获取正在编辑指定图片的用户id
     *
     * @param pictureId 图片id
     * @return {@code Long }
     */
    public static Long getEditingUser(Long pictureId) {
        return PICTURE_EDITING_USERS.get(pictureId);
    }

    /**
     * 设置正在编辑图片的用户id(用户进入编辑状态)
     *
     * @param pictureId 图片id
     * @param userId    用户id
     */
    public static void setEditingUser(Long pictureId, Long userId) {
        PICTURE_EDITING_USERS.put(pictureId, userId);
    }

    /**
     * 删除编辑用户(编辑完成后移除正在编辑状态)
     *
     * @param pictureId 照片 ID
     */
    public static void removeEditingUser(Long pictureId) {
        PICTURE_EDITING_USERS.remove(pictureId);
    }

}
